package BinarySearch;

/*
猜数字大小
我们正在玩猜数字游戏。猜数字游戏的规则如下：
我会从1到n 随机选择一个数字。 请你猜选出的是哪个数字。
如果你猜错了，我会告诉你，我选出的数字比你猜测的数字大了还是小了。
你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果，返回值一共有三种可能的情况：
-1：你猜的数字比我选出的数字大 （即num > pick）。
1：你猜的数字比我选出的数字小（即num <pick）。
0：你猜的数字与我选出的数字相等。（即num== pick）。
返回我选出的数字。

示例 1：
输入：n = 10, pick = 6
输出：6
示例 2：
输入：n = 1, pick = 1
输出：1
示例 3：
输入：n = 2, pick = 1
输出：1

作者：LeetCode
链接：https://leetcode.cn/leetbook/read/binary-search/xee4ev/
 */

public class _22猜数字大小 {
    public static void main(String[] args) {

    }

    //int guess(int num);  自带函数
    int guess(int num){
        return 0;
    }

    public int guessNumber(int n) {
        if(n == 1) return n;
        int left = 1, right = n;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if(guess(mid) == 0){
                return mid;
            } else if (guess(mid) > 0) {
                left = mid + 1;
            }else {
                right = mid - 1;
            }
        }
        return -1;
    }
}
